package _09线程同步3;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class SellerRunnable implements Runnable
{
	int count = 100;
	
	// 创建一个锁对象
	Lock l = new ReentrantLock();
	
	@Override
	public void run() 
	{
		while(count>0)   // 1    // 1    // 1
		{
			
//			// 上锁
//			l.lock();	// 第一个线程运行到这里，加锁，继续往下预习您
//						// 第二个线程运行到这里，发现被锁了，只能在这里等待
//			if(count>0)
//			{
//				count--;
//				System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余:"+count);
//			}
//			
//			// 解锁
//			l.unlock();
			
			
			// 尝试上锁
			if(l.tryLock())	// 上锁成功
			{
				if(count>0)
				{
					count--;
					System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余:"+count);
				}
				// 解锁
				l.unlock();
			}
			else
			{
				// 执行一些其他代码
				System.out.println(Thread.currentThread().getName() +"别人正在卖票，我稍等一下");
				
			}
			
			
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	


}